package br.pacote.negocio;

import java.sql.ResultSetMetaData;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyVetoException;
import java.text.ParseException;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JButton;
import javax.swing.JTextField;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import java.util.Vector;
import javax.swing.JScrollPane;
import javax.swing.text.MaskFormatter;
import javax.swing.JFormattedTextField;
import javax.swing.JOptionPane;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;


public class CadastrarAluno extends JInternalFrame implements ActionListener
{
   private JLabel lbTitulo01;   
   private JLabel lbTitulo02;         
   private JLabel lbNome;         
   private JLabel lbCpf;         
   private JLabel lbRg;         
   private JLabel lbNascimento;         
   private JLabel lbEndereco;         
   private JLabel lbTelefone;         
   private JLabel lbEmail;    
   
   private JTextField txtNome;
   private JTextField txtCpf;
   private JTextField txtRg;
   private JTextField txtNascimento;
   private JTextField txtEndereco;
   private JTextField txtTelefone;
   private JTextField txtEmail;
   
   private JButton btnGravar;  
   private JButton btnLimpar;
  
   public void Limpar()
   {
      txtNome.setText("");
      txtCpf.setText("");
      txtRg.setText("");
      txtNascimento.setText("Formato(ex:0000-00-00)");
      txtEndereco.setText("");
      txtTelefone.setText("");
      txtEmail.setText("");
   }
   
   public CadastrarAluno() throws ParseException
   {
      super("Cadastrar Aluno");

      lbTitulo01 = new JLabel("SIGA - Sistema de Gestão Acadêmica");
      lbTitulo02 = new JLabel("Cadastrar Aluno");
      lbNome = new JLabel("Nome:");
      lbCpf = new JLabel("CPF:");
      lbRg = new JLabel("RG:");
      lbNascimento = new JLabel("Nascimento:");
      lbEndereco = new JLabel("Endereco:");
      lbTelefone = new JLabel("Telefone:");
      lbEmail = new JLabel("Email:");
      
      
      txtNome = new JTextField("");
      txtCpf = new JTextField("");
      txtRg = new JTextField("");
      txtNascimento = new JTextField("Formato(ex:0000-00-00)");
      txtEndereco = new JTextField("");
      txtTelefone = new JTextField("");
      txtEmail = new JTextField("");
                         
      
      btnGravar = new JButton ("Gravar");      
      btnLimpar = new JButton ("Limpar");
      
      setLayout(null);

      lbTitulo01.setBounds(280,-50,250,120);   
      lbTitulo02.setBounds(340,-30,150,120);   
      lbNome.setBounds(10,70,50,20);  
      lbCpf.setBounds(400,70,200,20);  
      lbRg.setBounds(10,100,200,20);  
      lbNascimento.setBounds(400,100,200,20);  
      lbEndereco.setBounds(10,130,200,20);  
      lbTelefone.setBounds(400,130,200,20);  
      lbEmail.setBounds(10,160,200,20);  
      
      
      txtNome.setBounds(80,70,200,20);
      txtCpf.setBounds(480,70,200,20);  
      txtRg.setBounds(80,100,200,20);  
      txtNascimento.setBounds(480,100,200,20);  
      txtEndereco.setBounds(80,130,200,20);  
      txtTelefone.setBounds(480,130,200,20);  
      txtEmail.setBounds(80,160,200,20);  
       
      
      
      btnGravar.setBounds(250,210,100,20);      
      btnLimpar.setBounds(400,210,100,20);
                
          

      getContentPane().add(lbTitulo01);
      getContentPane().add(lbTitulo02);
      getContentPane().add(lbNome);
      getContentPane().add(lbCpf);
      getContentPane().add(lbRg);
      getContentPane().add(lbNascimento);
      getContentPane().add(lbEndereco);
      getContentPane().add(lbTelefone);
      getContentPane().add(lbEmail);
      
      
      getContentPane().add(txtNome);
      getContentPane().add(txtCpf);
      getContentPane().add(txtRg);
      getContentPane().add(txtNascimento);
      getContentPane().add(txtEndereco);
      getContentPane().add(txtTelefone);
      getContentPane().add(txtEmail);
      
      
      getContentPane().add(btnGravar);      
      getContentPane().add(btnLimpar);
           
            
      btnGravar.addActionListener(this);      
      btnLimpar.addActionListener(this);
      
      setBounds(0,0,800,300);
      setVisible(true);
      setClosable(true);
      setDefaultCloseOperation(DISPOSE_ON_CLOSE);     
   }


   public void actionPerformed(ActionEvent e)
   {
       if(e.getSource()==btnGravar)
       {
         if(!txtNome.getText().equals(""))
         {
             if(!txtCpf.getText().equals(""))
             {
                 if(!txtRg.getText().equals(""))
                 {
                    if(!txtNascimento.getText().equals("Formato(ex:0000-00-00)"))
                    {
                       if(!txtEndereco.getText().equals(""))
                       {
                           if(!txtTelefone.getText().equals(""))
                           {
                               if(!txtEmail.getText().equals(""))
                               {           
                                   
                                     String url="jdbc:mysql://localhost/siga";
                                     String driver="com.mysql.jdbc.Driver";
                                     String usuario= "root";
                                     String senha="root";

                                     Connection conexao = null;
                                     Statement sentenca = null;
                                     Statement sentenca2 = null;
                                     ResultSet resultSet = null;
                                     ResultSet resultSet2 = null;
                                     Statement sentenca3 = null;
                                     Statement sentenca4 = null;
                                     Statement sentenca5 = null;
                                     
                                       try
                                       {   
                                           Class.forName(driver);
                                           conexao = DriverManager.getConnection(url,usuario,senha);
                                           sentenca = conexao.createStatement();
                                           sentenca2 = (Statement) conexao.createStatement(); 
                                           sentenca3 = conexao.createStatement();
                                           sentenca4 = conexao.createStatement();
                                           sentenca5 = (Statement) conexao.createStatement();
                                                                                   
                                           sentenca.execute("INSERT INTO pessoa(`matricula`,`nome`,`CPF`,`RG`,"
                                                   + "`nascimento`,`endereco`,`telefone`,`email`) VALUES "
                                                   + " (null,'"+txtNome.getText()+"',"+txtCpf.getText()+""
                                                   + " ,"+txtRg.getText()+",'"+txtNascimento.getText()+"'"
                                                   + " ,'"+txtEndereco.getText()+"',"+txtTelefone.getText()+""
                                                   + " ,'"+txtEmail.getText()+"');");
                                           
                                           resultSet = sentenca2.executeQuery("Select matricula from pessoa "
                                                   + " where"
                                                   + " cpf="+txtCpf.getText()+"");
                                           
                                           Vector registro = null; 
                                           
                                           while(resultSet.next())
                                           {
                                               registro = new Vector();
                                               
                                               registro.add(resultSet.getInt(1));                                               
                                           }                                             
                                           
                                           String matricula =String.valueOf(registro.firstElement());
                                                                                                                               
                                           sentenca3.execute("INSERT INTO `siga`.`aluno`"
                                                   + " (`idAluno`,`Pessoa_idPessoa`)"
                                                   + "VALUES(null,"+matricula+");");
                                           
                                           resultSet2 = sentenca5.executeQuery("select idAluno"
                                                   + " from aluno"
                                                   + " where"
                                                   + " Pessoa_idPessoa="+matricula+";");
                                           
                                           Vector registro2 = null; 
                                           
                                           while(resultSet2.next())
                                           {
                                               registro2 = new Vector();
                                               
                                               registro2.add(resultSet2.getInt(1));                                               
                                           }                                             
                                           
                                           String codAluno =String.valueOf(registro2.firstElement());
                                           
                                           sentenca4.execute("INSERT INTO `historico_escolar`"
                                                   + " (`codHistorico_escolar`,`nota1`,`nota2`,`nota3`,`nota4`,"
                                                   + " `media_final`,`frequencia`,`Aluno_idAluno`)"
                                                   + " VALUES"
                                                   + " (null,null,null,null,null,null,null,"+codAluno+");");                                           
                                           
                                           JOptionPane.showMessageDialog(null,"Cadastro realizado com sucesso!");
                                           
                                           Limpar();
                                             
                                       }catch(ClassNotFoundException ex)
                                        {
                                            JOptionPane.showMessageDialog(this,"Driver não localizado: "+ ex.getMessage());


                                        }catch(SQLException ex)
                                        {
                                            JOptionPane.showMessageDialog(this,"Erro de SQL:"+ ex.getMessage());

                                        }finally
                                        {
                                            try
                                            {
                                                sentenca.close();
                                                resultSet.close();
                                                conexao.close();
                                            }catch(SQLException ex)
                                             {
                                                 JOptionPane.showMessageDialog(this, "Erro de SQL: " +ex.getMessage());
                                             }
                                        }
                            }//fim do if(txtEmail!=null)
                            else
                            {
                               JOptionPane.showMessageDialog(null,"Informe o Email!");
                            }
                         }//fim do if(txtTelefone!=null)
                         else
                         {
                            JOptionPane.showMessageDialog(null,"Informe o Telefone!");
                         }
                      }//fim do if(txtEndereço!=null)
                      else
                      {
                         JOptionPane.showMessageDialog(null,"Informe o Endereço!");
                      }
                   }//fim do if(txtNascimento!=null)
                   else
                   {
                       JOptionPane.showMessageDialog(null,"Informe o Nascimento!");
                   }
                }//fim do if(txtRg!=null)
                else
                {
                    JOptionPane.showMessageDialog(null,"Informe o RG!");
                }
             }//fim do if(txtCpf!=null)
          else
          {
             JOptionPane.showMessageDialog(null,"Informe o CPF!");
          }
       }//fim do if(txtNome!=null)
       else
       {
           JOptionPane.showMessageDialog(null,"Informe o nome!");
       }
      }
       
      if(e.getSource()==btnLimpar)
      {
         Limpar();
      }
   }
}
